% Asymptote 1.90 listings syntex support
% 2009-11-25

\usepackage[hyperref]{xcolor}
\definecolor{bg-color}{rgb}{0.96,1,0.95}
\definecolor{shadecolor}{rgb}{0.96,1,0.95}
\definecolor{txt-color}{HTML}{000000}
\definecolor{builtin}{HTML}{DA70D6}
\definecolor{comment}{HTML}{B22222}
\definecolor{comment-delimiter}{HTML}{B22222}
\definecolor{constant}{HTML}{5F9EA0}
\definecolor{function-name}{HTML}{0000FF}
\definecolor{keyword}{HTML}{a020F0}
\definecolor{string}{HTML}{BC8F8F}
\definecolor{type}{HTML}{228B22}
\definecolor{variable-name}{HTML}{B8860B}
\definecolor{brick}{HTML}{7B0C00}

% keywords 对应 asy-keyword-name
% keywords=[2] 对应 asy-type-name
% keywords=[3] 对应 asy-function-name
% keywords=[4] 对应 asy-variable-name 
\usepackage{listings}
% 语言定义
\lstdefinelanguage{Asymptote}{alsoletter={},
  sensitive=true,% 大小写
  keywords={and, controls, tension, atleast, curl, if, else, while, for, do,
  return, break, continue, struct, typedef, new, access, import, unravel,
  from, include, quote, static, public, private, restricted, this, explicit,
  true, false, null, cycle, newframe, operator},
  keywords=[2]{Braid, FitResult, Label, Legend, TreeNode, abscissa, arc,
  arrowhead, binarytree, binarytreeNode, block, bool, bool3, bounds, bqe,
  circle, conic, coord, coordsys, cputime, ellipse, file, filltype, frame,
  grid3, guide, horner, hsv, hyperbola, indexedTransform, int, inversion,
  key, light, line, linefit, marginT, marker, mass, object, pair, parabola,
  path, path3, pen, picture, point, position, projection, real, revolution,
  scaleT, scientific, segment, side, slice, splitface, string, surface,
  tensionSpecifier, ticklocate, ticksgridT, tickvalues, transform,
  transformation, tree, triangle, trilinear, triple, vector, vertex, void},
  keywords=[3]{AND, Arc, ArcArrow, ArcArrows, Arrow, Arrows, Automatic,
  AvantGarde, BBox, BWRainbow, BWRainbow2, Bar, Bars, BeginArcArrow,
  BeginArrow, BeginBar, BeginDotMargin, BeginMargin, BeginPenMargin, Blank,
  Bookman, Bottom, BottomTop, Bounds, Break, Broken, BrokenLog, Ceil, Circle,
  CircleBarIntervalMarker, Cos, Courier, CrossIntervalMarker, DefaultFormat,
  DefaultLogFormat, Degrees, Dir, DotMargin, DotMargins, Dotted, Draw,
  Drawline, Embed, EndArcArrow, EndArrow, EndBar, EndDotMargin, EndMargin,
  EndPenMargin, Fill, FillDraw, Floor, Format, Full, Gaussian, Gaussrand,
  Gaussrandpair, Gradient, Grayscale, Helvetica, Hermite, HookHead,
  InOutTicks, InTicks, J, Label, Landscape, Left, LeftRight, LeftTicks,
  Legend, Linear, Link, Log, LogFormat, Margin, Margins, Mark, MidArcArrow,
  MidArrow, NOT, NewCenturySchoolBook, NoBox, NoMargin, NoModifier, NoTicks,
  NoTicks3, NoZero, NoZeroFormat, None, OR, OmitFormat, OmitTick, OutTicks,
  Ox, Oy, Palatino, PaletteTicks, Pen, PenMargin, PenMargins, Pentype,
  Portrait, RadialShade, Rainbow, Range, Relative, Right, RightTicks, Rotate,
  Round, SQR, Scale, ScaleX, ScaleY, ScaleZ, Seascape, Shift, Sin, Slant,
  Spline, StickIntervalMarker, Straight, Symbol, Tan, TeXify, Ticks, Ticks3,
  TildeIntervalMarker, TimesRoman, Top, TrueMargin, UnFill, UpsideDown,
  Wheel, X, XEquals, XOR, XY, XYEquals, XYZero, XYgrid, XZEquals, XZZero,
  XZero, XZgrid, Y, YEquals, YXgrid, YZ, YZEquals, YZZero, YZero, YZgrid, Z,
  ZX, ZXgrid, ZYgrid, ZapfChancery, ZapfDingbats, _cputime, _draw, _eval,
  _image, _labelpath, _projection, _strokepath, _texpath, aCos, aSin, aTan,
  abort, abs, accel, acos, acosh, acot, acsc, add, addArrow, addMargins,
  addSaveFunction, addnode, addnodes, addpenarc, addpenline, addseg, adjust,
  alias, align, all, altitude, angabscissa, angle, angpoint, animate,
  annotate, anticomplementary, antipedal, apply, approximate, arc,
  arcarrowsize, arccircle, arcdir, arcfromcenter, arcfromfocus, arclength,
  arcnodesnumber, arcpoint, arcsubtended, arcsubtendedcenter, arctime,
  arctopath, array, arrow, arrow2, arrowbase, arrowbasepoints, arrowsize,
  asec, asin, asinh, ask, assert, asy, asycode, asydir, asyfigure,
  asyfilecode, asyinclude, asywrite, atan, atan2, atanh, atbreakpoint,
  atexit, atime, attach, attract, atupdate, autoformat, autoscale,
  autoscale3, axes, axes3, axialshade, axis, axiscoverage, azimuth, babel,
  background, bangles, bar, barmarksize, barsize, basealign, baseline, bbox,
  beep, begin, beginclip, begingroup, beginpoint, between, bevel, bezier,
  bezierP, bezierPP, bezierPPP, bezulate, bibliography, bibliographystyle,
  binarytree, binarytreeNode, binomial, binput, bins, bisector,
  bisectorpoint, blend, boutput, box, bqe, breakpoint, breakpoints, brick,
  buildRestoreDefaults, buildRestoreThunk, buildcycle, bulletcolor, byte,
  canonical, canonicalcartesiansystem, cartesiansystem, case1, case2, case3,
  cbrt, cd, ceil, center, centerToFocus, centroid, cevian, change2,
  changecoordsys, checkSegment, checkconditionlength, checker, checklengths,
  checkposition, checktriangle, choose, circle, circlebarframe,
  circlemarkradius, circlenodesnumber, circumcenter, circumcircle, clamped,
  clear, clip, clipdraw, close, cmyk, code, colatitude, collect, collinear,
  color, colorless, colors, colorspace, comma, compassmark, complement,
  complementary, concat, concurrent, cone, conic, conicnodesnumber,
  conictype, conj, connect, containmentTree, contains, contour, contour3,
  controlSpecifier, convert, coordinates, coordsys, copy, cos, cosh, cot,
  countIntersections, cputime, crop, cropcode, cross, crossframe, crosshatch,
  crossmarksize, csc, cubicroots, curabscissa, curlSpecifier, curpoint,
  currentarrow, currentexitfunction, currentmomarrow,
  currentpolarconicroutine, curve, cut, cutafter, cutbefore, cyclic,
  cylinder, debugger, deconstruct, defaultdir, defaultformat, defaultpen,
  defined, degenerate, degrees, delete, deletepreamble, determinant,
  diagonal, diamond, diffdiv, dir, dirSpecifier, dirtime, display, distance,
  divisors, do_overpaint, dot, dotframe, dotsize, downcase, draw, drawAll,
  drawDoubleLine, drawFermion, drawGhost, drawGluon, drawMomArrow,
  drawPhoton, drawScalar, drawVertex, drawVertexBox, drawVertexBoxO,
  drawVertexBoxX, drawVertexO, drawVertexOX, drawVertexTriangle,
  drawVertexTriangleO, drawVertexX, drawarrow, drawarrow2, drawline,
  drawtick, duplicate, elle, ellipse, ellipsenodesnumber, embed, embed3,
  empty, enclose, end, endScript, endclip, endgroup, endl, endpoint,
  endpoints, eof, eol, equation, equations, erase, erasestep, erf, erfc,
  error, errorbar, errorbars, eval, excenter, excircle, exit, exitXasyMode,
  exitfunction, exp, expfactors, expi, expm1, exradius, extend, extension,
  extouch, fabs, factorial, fermat, fft, fhorner, figure, file, filecode,
  fill, filldraw, filloutside, fillrule, filltype, find, finite,
  finiteDifferenceJacobian, firstcut, firstframe, fit, fit2, fixedscaling,
  floor, flush, fmdefaults, fmod, focusToCenter, font, fontcommand, fontsize,
  foot, format, frac, frequency, fromCenter, fromFocus, fspline,
  functionshade, gamma, generate_random_backtrace, generateticks, gergonne,
  getc, getint, getpair, getreal, getstring, gettriple, gluon, gouraudshade,
  graph, graphic, gray, grestore, grid, grid3, gsave, halfbox, hatch,
  hdiffdiv, hermite, hex, histogram, history, hline, hprojection, hsv,
  hyperbola, hyperbolanodesnumber, hyperlink, hypot, identity, image,
  incenter, incentral, incircle, increasing, incrementposition,
  indexedTransform, indexedfigure, initXasyMode, initdefaults, input,
  inradius, insert, inside, integrate, interactive, interior, interp,
  interpolate, intersect, intersection, intersectionpoint,
  intersectionpoints, intersections, intouch, inverse, inversion, invisible,
  is3D, isDuplicate, isogonal, isogonalconjugate, isotomic,
  isotomicconjugate, isparabola, italic, item, key, kurtosis, kurtosisexcess,
  label, labelaxis, labelmargin, labelpath, labels, labeltick, labelx,
  labelx3, labely, labely3, labelz, labelz3, lastcut, latex, latitude,
  latticeshade, layer, layout, ldexp, leastsquares, legend, legenditem,
  length, lift, light, limits, line, linear, linecap, lineinversion,
  linejoin, linemargin, lineskip, linetype, linewidth, link, list, lm_enorm,
  lm_evaluate_default, lm_lmdif, lm_lmpar, lm_minimize, lm_print_default,
  lm_print_quiet, lm_qrfac, lm_qrsolv, locale, locate, locatefile, location,
  log, log10, log1p, logaxiscoverage, longitude, lookup, magnetize, makeNode,
  makedraw, makepen, map, margin, markangle, markangleradius, markanglespace,
  markarc, marker, markinterval, marknodes, markrightangle, markuniform,
  mass, masscenter, massformat, math, max, max3, maxbezier, maxbound,
  maxcoords, maxlength, maxratio, maxtimes, mean, medial, median, midpoint,
  min, min3, minbezier, minbound, minipage, minratio, mintimes, miterlimit,
  momArrowPath, momarrowsize, monotonic, multifigure, nativeformat, natural,
  needshipout, newl, newpage, newslide, newton, newtree, nextframe,
  nextnormal, nextpage, nib, nodabscissa, none, norm, normalvideo, notaknot,
  nowarn, numberpage, nurb, object, offset, onpath, opacity, opposite,
  orientation, orig_circlenodesnumber, orig_circlenodesnumber1, orig_draw,
  orig_ellipsenodesnumber, orig_ellipsenodesnumber1,
  orig_hyperbolanodesnumber, orig_parabolanodesnumber, origin, orthic,
  orthocentercenter, outformat, outline, outprefix, output,
  overloadedMessage, overwrite, pack, pad, pairs, palette, parabola,
  parabolanodesnumber, parallel, partialsum, path, path3, pattern, pause,
  pdf, pedal, periodic, perp, perpendicular, perpendicularmark, phantom,
  phi1, phi2, phi3, photon, piecewisestraight, point, polar,
  polarconicroutine, polargraph, polygon, postcontrol, postscript, pow10,
  ppoint, prc, prc0, precision, precontrol, prepend, print_random_addresses,
  project, projection, purge, pwhermite, quadrant, quadraticroots, quantize,
  quarticroots, quotient, radialshade, radians, radicalcenter, radicalline,
  radius, rand, randompath, rd, readline, realmult, realquarticroots,
  rectangle, rectangular, rectify, reflect, relabscissa, relative,
  relativedistance, reldir, relpoint, reltime, remainder, remark,
  removeDuplicates, rename, replace, report, resetdefaultpen, restore,
  restoredefaults, reverse, reversevideo, rf, rfind, rgb, rgba, rgbint, rms,
  rotate, rotateO, rotation, round, roundbox, roundedpath, roundrectangle,
  samecoordsys, sameside, sample, save, savedefaults, saveline, scale,
  scale3, scaleO, scaleT, scaleless, scientific, search, searchtree, sec,
  secondaryX, secondaryY, seconds, section, sector, seek, seekeof, segment,
  sequence, setpens, sgn, sgnd, sharpangle, sharpdegrees, shift, shiftless,
  shipout, shipout3, show, side, simeq, simpson, sin, single, sinh, size,
  size3, skewness, skip, slant, sleep, slope, slopefield, solve, solveBVP,
  sort, sourceline, sphere, split, sqrt, square, srand, standardizecoordsys,
  startScript, startTrembling, stdev, step, stickframe, stickmarksize,
  stickmarkspace, stop, straight, straightness, string, stripdirectory,
  stripextension, stripfile, strokepath, subdivide, subitem, subpath, substr,
  sum, surface, symmedial, symmedian, system, tab, tableau, tan, tangent,
  tangential, tangents, tanh, tell, tensionSpecifier, tensorshade, tex,
  texcolor, texify, texpath, texpreamble, texreset, texshipout, texsize,
  textpath, thick, thin, tick, tickMax, tickMax3, tickMin, tickMin3,
  ticklabelshift, ticklocate, tildeframe, tildemarksize, tile, tiling, time,
  times, title, titlepage, topbox, transform, transformation, transpose,
  tremble, trembleFuzz, tremble_circlenodesnumber,
  tremble_circlenodesnumber1, tremble_draw, tremble_ellipsenodesnumber,
  tremble_ellipsenodesnumber1, tremble_hyperbolanodesnumber,
  tremble_marknodes, tremble_markuniform, tremble_parabolanodesnumber,
  triangle, triangleAbc, triangleabc, triangulate, tricoef, tridiagonal,
  trilinear, trim, trueMagnetize, truepoint, tube, uncycle, unfill, uniform,
  unit, unitrand, unitsize, unityroot, unstraighten, upcase, updatefunction,
  uperiodic, upscale, uptodate, usepackage, usersetting, usetypescript,
  usleep, value, variance, variancebiased, vbox, vector, vectorfield,
  verbatim, view, vline, vperiodic, vprojection, warn, warning,
  windingnumber, write, xaxis, xaxis3, xaxis3At, xaxisAt, xequals, xinput,
  xlimits, xoutput, xpart, xscale, xscaleO, xtick, xtick3, xtrans, yaxis,
  yaxis3, yaxis3At, yaxisAt, yequals, ylimits, ypart, yscale, yscaleO, ytick,
  ytick3, ytrans, zaxis3, zaxis3At, zero, zero3, zlimits, zpart, ztick,
  ztick3, ztrans},
  keywords=[4]{AliceBlue, Align, Allow, AntiqueWhite, Apricot, Aqua,
  Aquamarine, Aspect, Azure, BeginPoint, Beige, Bisque, Bittersweet, Black,
  BlanchedAlmond, Blue, BlueGreen, BlueViolet, Both, Break, BrickRed, Brown,
  BurlyWood, BurntOrange, CCW, CW, CadetBlue, CarnationPink, Center,
  Centered, Cerulean, Chartreuse, Chocolate, Coeff, Coral, CornflowerBlue,
  Cornsilk, Crimson, Crop, Cyan, Dandelion, DarkBlue, DarkCyan,
  DarkGoldenrod, DarkGray, DarkGreen, DarkKhaki, DarkMagenta, DarkOliveGreen,
  DarkOrange, DarkOrchid, DarkRed, DarkSalmon, DarkSeaGreen, DarkSlateBlue,
  DarkSlateGray, DarkTurquoise, DarkViolet, DeepPink, DeepSkyBlue,
  DefaultHead, DimGray, DodgerBlue, Dotted, Draw, E, ENE, EPS, ESE, E_Euler,
  E_PC, E_RK2, E_RK3BS, Emerald, EndPoint, Euler, Fill, FillDraw, FireBrick,
  FloralWhite, ForestGreen, Fuchsia, Gainsboro, GhostWhite, Gold, Goldenrod,
  Gray, Green, GreenYellow, Honeydew, HookHead, Horizontal, HotPink, I,
  IgnoreAspect, IndianRed, Indigo, Ivory, JOIN_IN, JOIN_OUT, JungleGreen,
  Khaki, LM_DWARF, LM_MACHEP, LM_SQRT_DWARF, LM_SQRT_GIANT, LM_USERTOL,
  Label, Lavender, LavenderBlush, LawnGreen, LeftJustified, LeftSide,
  LemonChiffon, LightBlue, LightCoral, LightCyan, LightGoldenrodYellow,
  LightGreen, LightGrey, LightPink, LightSalmon, LightSeaGreen, LightSkyBlue,
  LightSlateGray, LightSteelBlue, LightYellow, Lime, LimeGreen, Linear,
  Linen, Log, Logarithmic, Magenta, Mahogany, Mark, MarkFill, Maroon, Max,
  MediumAquamarine, MediumBlue, MediumOrchid, MediumPurple, MediumSeaGreen,
  MediumSlateBlue, MediumSpringGreen, MediumTurquoise, MediumVioletRed,
  Melon, MidPoint, MidnightBlue, Min, MintCream, MistyRose, Moccasin, Move,
  MoveQuiet, Mulberry, N, NE, NNE, NNW, NW, NavajoWhite, Navy, NavyBlue,
  NoAlign, NoCrop, NoFill, NoSide, OldLace, Olive, OliveDrab, OliveGreen,
  Orange, OrangeRed, Orchid, Ox, Oy, PC, PaleGoldenrod, PaleGreen,
  PaleTurquoise, PaleVioletRed, PapayaWhip, Peach, PeachPuff, Periwinkle,
  Peru, PineGreen, Pink, Plum, PowderBlue, ProcessBlue, Purple, RK2, RK3,
  RK3BS, RK4, RK5, RK5DP, RK5F, RawSienna, Red, RedOrange, RedViolet,
  Rhodamine, RightJustified, RightSide, RosyBrown, RoyalBlue, RoyalPurple,
  RubineRed, S, SE, SSE, SSW, SW, SaddleBrown, Salmon, SandyBrown, SeaGreen,
  Seashell, Sepia, Sienna, Silver, SimpleHead, SkyBlue, SlateBlue, SlateGray,
  Snow, SpringGreen, SteelBlue, Suppress, SuppressQuiet, Tan, TeXHead, Teal,
  TealBlue, Thistle, Ticksize, Tomato, Turquoise, UnFill, VERSION, Value,
  Vertical, Violet, VioletRed, W, WNW, WSW, Wheat, White, WhiteSmoke,
  WildStrawberry, XYAlign, YAlign, Yellow, YellowGreen, YellowOrange,
  addpenarc, addpenline, align, allowstepping, angularsystem, animationdelay,
  appendsuffix, arcarrowangle, arcarrowfactor, arrow2sizelimit, arrowangle,
  arrowbarb, arrowdir, arrowfactor, arrowhookfactor, arrowlength,
  arrowsizelimit, arrowtexfactor, authorpen, axis, axiscoverage,
  axislabelfactor, background, backgroundcolor, backgroundpen, barfactor,
  barmarksizefactor, basealign, baselinetemplate, beveljoin, bigvertexpen,
  bigvertexsize, black, blue, bm, bottom, bp, brown, bullet, byfoci,
  byvertices, camerafactor, chartreuse, circlemarkradiusfactor,
  circlenodesnumberfactor, circleprecision, circlescale, cm, codefile,
  codepen, codeskip, colorPen, coloredNodes, coloredSegments,
  conditionlength, conicnodesfactor, count, cputimeformat,
  crossmarksizefactor, currentcoordsys, currentlight, currentpatterns,
  currentpen, currentpicture, currentposition, currentprojection,
  curvilinearsystem, cuttings, cyan, darkblue, darkbrown, darkcyan, darkgray,
  darkgreen, darkgrey, darkmagenta, darkolive, darkred, dashdotted, dashed,
  datepen, dateskip, debuggerlines, debugging, deepblue, deepcyan, deepgray,
  deepgreen, deepgrey, deepmagenta, deepred, default, defaultControl,
  defaultS, defaultbackpen, defaultcoordsys, defaultfilename, defaultformat,
  defaultmassformat, defaultpen, diagnostics, differentlengths, dot,
  dotfactor, dotframe, dotted, doublelinepen, doublelinespacing, down,
  duplicateFuzz, ellipsenodesnumberfactor, eps, epsgeo, epsilon, evenodd,
  extendcap, fermionpen, figureborder, figuremattpen, firstnode, firststep,
  foregroundcolor, fuchsia, fuzz, gapfactor, ghostpen, gluonamplitude,
  gluonpen, gluonratio, gray, green, grey, hatchepsilon, havepagenumber,
  heavyblue, heavycyan, heavygray, heavygreen, heavygrey, heavymagenta,
  heavyred, hline, hwratio, hyperbolanodesnumberfactor, identity4, ignore,
  inXasyMode, inch, inches, includegraphicscommand, inf, infinity,
  institutionpen, intMax, intMin, invert, invisible, itempen, itemskip,
  itemstep, labelmargin, landscape, lastnode, left, legendhskip,
  legendlinelength, legendmargin, legendmarkersize, legendmaxrelativewidth,
  legendvskip, lightblue, lightcyan, lightgray, lightgreen, lightgrey,
  lightmagenta, lightolive, lightred, lightyellow, linemargin, lm_infmsg,
  lm_shortmsg, longdashdotted, longdashed, magenta, magneticPoints,
  magneticRadius, mantissaBits, markangleradius, markangleradiusfactor,
  markanglespace, markanglespacefactor, mediumblue, mediumcyan, mediumgray,
  mediumgreen, mediumgrey, mediummagenta, mediumred, mediumyellow, middle,
  minDistDefault, minblockheight, minblockwidth, mincirclediameter,
  minipagemargin, minipagewidth, minvertexangle, miterjoin, mm,
  momarrowfactor, momarrowlength, momarrowmargin, momarrowoffset,
  momarrowpen, monoPen, morepoints, nCircle, newbulletcolor, ngraph, nil,
  nmesh, nobasealign, nodeMarginDefault, nodesystem, nomarker, nopoint,
  noprimary, nullpath, nullpen, numarray, ocgindex, oldbulletcolor, olive,
  orange, origin, overpaint, page, pageheight, pagemargin, pagenumberalign,
  pagenumberpen, pagenumberposition, pagewidth, paleblue, palecyan, palegray,
  palegreen, palegrey, palemagenta, palered, paleyellow,
  parabolanodesnumberfactor, perpfactor, phi, photonamplitude, photonpen,
  photonratio, pi, pink, plain, plus, preamblenodes, pt, purple, r3, r4a,
  r4b, randMax, realDigits, realEpsilon, realMax, realMin, red,
  relativesystem, reverse, right, roundcap, roundjoin, royalblue, salmon,
  saveFunctions, scalarpen, sequencereal, settings, shipped,
  signedtrailingzero, solid, springgreen, sqrtEpsilon, squarecap, squarepen,
  startposition, stdin, stdout, stepfactor, stepfraction, steppagenumberpen,
  stepping, stickframe, stickmarksizefactor, stickmarkspacefactor, textpen,
  ticksize, tildeframe, tildemarksizefactor, tinv, titlealign, titlepagepen,
  titlepageposition, titlepen, titleskip, top, trailingzero, treeLevelStep,
  treeMinNodeWidth, treeNodeStep, trembleAngle, trembleFrequency,
  trembleRandom, tremblingMode, undefined, unitcircle, unitsquare, up,
  urlpen, urlskip, version, vertexpen, vertexsize, viewportmargin,
  viewportsize, vline, white, wye, xformStack, yellow, ylabelwidth,
  zerotickfuzz, zerowinding},
  % otherkeywords={!,@,\$,\%,+,-,^,=,>,<,->,
  %   --,..,**,::,\@\@,\$\$,---,...},% 运算符等，但小心会与注释冲突
  morecomment=[l]{//},% 注释
  morecomment=[s]{/*}{*/},% 注释
  morestring=[b]",% 字符串
  morestring=[b]',% 字符串
}
% 定义别名
\lstalias{asy}{Asymptote}
\lstset{%extendedchars=false,% 解决中文跨页出错的问题；对 xetex 无用
  language={Asymptote},
  basewidth={.5em},
  basicstyle={\ttfamily},
  keywordstyle={\color{keyword}},
  keywordstyle=[2]{\color{type}},
  keywordstyle=[3]{\color{function-name}},
  keywordstyle=[4]{\color{variable-name}},
  commentstyle={\color{comment}},
  stringstyle={\color{string}},
  xleftmargin={2em},
  xrightmargin={2em},
  tabsize=8,
  backgroundcolor={\color{shadecolor}},
  % numbers=left,
  numberstyle=\tiny,
  stepnumber=1,
  numbersep=5pt}
%
\lstdefinestyle{lesscolor}{keywordstyle={\color{keyword!50!black}},
  keywordstyle=[2]{\color{type!50!black}},
  keywordstyle=[3]{\color{function-name!50!black}},
  keywordstyle=[4]{\color{variable-name!50!black}},
  commentstyle={\color{comment!50!black}},
  stringstyle={\color{string!50!black}}}
%
\def\oldvert{|} % 保存字符 | 的旧定义（其 catcode 在此定义读入时已确定）
\lstMakeShortInline[style=lesscolor]\|

\def\inlinecode{\expandafter\lstinline[style=lesscolor]}

\endinput

% vim:tw=77:
